Flutter のレイアウト
Flutter のレイアウト メカニズムの中核はウィジェットです。 Flutter では、ほぼ すべてがウィジェットです。レイアウト モデルさえもウィジェットです。 Flutter アプリで表示される画像、アイコン、テキストはすべてウィジェットです。 ただし、行、列、 表示されるウィジェットを配置、制限、整列させるグリッド。
ウィジェットを合成してレイアウトを作成し、より複雑なウィジェットを構築します。 たとえば、以下の最初のスクリーンショットには、ラベルが付いた 3 つのアイコンが表示されています。 それぞれの下に:
2 番目のスクリーンショットには、次の行が表示された視覚的なレイアウトが表示されます。 3 つの列。各列にはアイコンとラベルが含まれます。
この UI のウィジェット ツリーの図は次のとおりです。
このほとんどは予想どおりに見えるはずですが、疑問に思うかもしれません。
コンテナー (ピンク色で表示) について説明します。Container
ウィジェットクラスです
これにより、子ウィジェットをカスタマイズできるようになります。使うContainer
いつ
パディング、マージン、境界線、または背景色を追加したい場合は、
その機能のいくつかを挙げます。
この例では、それぞれText
ウィジェットはContainer
余白を追加します。全体Row
にも置かれていますContainer
行の周囲にパディングを追加します。
この例の残りの UI はプロパティによって制御されます。
を設定しますIcon
の色を使用してcolor
財産。
使用Text.style
プロパティを使用して、フォント、その色、太さなどを設定します。
列と行には、その行をどのように配置するかを指定できるプロパティがあります。
子は垂直または水平に整列され、どのくらいのスペースが確保されますか
子供たちが占有すべきです。
ウィジェットをレイアウトする
Flutter で 1 つのウィジェットをレイアウトするにはどうすればよいでしょうか?このセクション では、簡単なウィジェットを作成して表示する方法を示します。 単純な Hello World アプリのコード全体も示しています。
Flutter では、テキスト、アイコン、 または画面上の画像。
1. レイアウトウィジェットを選択します
さまざまな種類からお選びくださいレイアウトウィジェットベースの 表示されるウィジェットをどのように配置または制限するかについて、 これらの特性は通常、 含まれるウィジェット。
この例では、Center
コンテンツを中心に置く
水平方向と垂直方向。
2. 表示可能なウィジェットを作成する
たとえば、Text
ウィジェット:
Text('Hello World'),
を作成しますImage
ウィジェット:
Image.asset(
'images/lake.jpg',
fit: BoxFit.cover,
),
を作成しますIcon
ウィジェット:
Icon(
Icons.star,
color: Colors.red[500],
),
3. 表示ウィジェットをレイアウト ウィジェットに追加します
すべてのレイアウト ウィジェットには次のいずれかが含まれます。
- あ
child
たとえば、子供が 1 人いる場合は、プロパティCenter
またContainer
- あ
children
ウィジェットのリストを受け取る場合はプロパティを使用します。たとえば、Row
、Column
、ListView
、 またStack
。
を追加します。Text
ウィジェットへのCenter
ウィジェット:
const Center(
child: Text('Hello World'),
),
4. レイアウト ウィジェットをページに追加します
Flutter アプリ自体はウィジェットであり、ほとんどのウィジェットにはbuild()
方法。アプリのウィジェットをインスタンス化して返すbuild()
方法
ウィジェットを表示します。
素材アプリ
のためにMaterial
アプリを使用できますScaffold
ウィジェット;
デフォルトのバナー、背景色、
引き出し、スナックバー、ボトムシートを追加するための API を備えています。
次に、Center
ウィジェットを直接body
ホームページのプロパティ。
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter layout demo',
home: Scaffold(
appBar: AppBar(
title: const Text('Flutter layout demo'),
),
body: const Center(
child: Text('Hello World'),
),
),
);
}
}
非マテリアルアプリ
マテリアル以外のアプリの場合は、Center
アプリのウィジェットbuild()
方法:
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return Container(
decoration: const BoxDecoration(color: Colors.white),
child: const Center(
child: Text(
'Hello World',
textDirection: TextDirection.ltr,
style: TextStyle(
fontSize: 32,
color: Colors.black87,
),
),
),
);
}
}
デフォルトでは、マテリアル以外のアプリにはAppBar
、 タイトル、
または背景色。マテリアル以外のアプリでこれらの機能が必要な場合は、
自分で構築する必要があります。このアプリは背景を変更します
マテリアル アプリを模倣するには、色を白、テキストを濃いグレーにします。
それでおしまい!アプリを実行すると、次のように表示されます。こんにちは世界。
アプリのソースコード:
- 素材アプリ
- 非マテリアルアプリ
複数のウィジェットを縦横に配置する
最も一般的なレイアウト パターンの 1 つは、
ウィジェットを垂直方向または水平方向に配置します。を使用できますRow
ウィジェットを水平に配置するにはウィジェット、
そしてColumn
ウィジェットを使用してウィジェットを垂直に配置します。
Flutter で行または列を作成するには、子のリストを追加します。
ウィジェットをRow
またColumn
ウィジェット。順番に、
それぞれの子自体が行または列などになる可能性があります。
次の例は、行をネストしたり、
行または列の内側の列。
このレイアウトは次のように構成されていますRow
。行には 2 つの子が含まれています。
左側に列、右側に画像:
左側の列のウィジェット ツリーは行と列をネストします。
Pavlova のレイアウト コードの一部を次のように実装します。行と列のネスト。
ウィジェットの整列
行または列がその子をどのように配置するかを制御します。mainAxisAlignment
とcrossAxisAlignment
プロパティ。
行の場合、主軸は水平に走り、横軸は走ります。
垂直に。柱の場合、主軸は垂直に走り、十字は
軸は水平に走ります。
のMainAxisAlignment
とCrossAxisAlignment
enum は、アライメントを制御するためのさまざまな定数を提供します。
次の例では、3 つの画像はそれぞれ幅 100 ピクセルです。
レンダーボックス(この場合は画面全体)
幅が 300 ピクセルを超えているため、主軸を設定します
への位置合わせspaceEvenly
自由な水平方向を分割します
各画像の間、前後に均等なスペースを確保します。
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Image.asset('images/pic1.jpg'),
Image.asset('images/pic2.jpg'),
Image.asset('images/pic3.jpg'),
],
);
アプリのソース: 行_列
列は行と同じように機能します。次の例は列を示しています
3 つの画像で構成され、それぞれの高さは 100 ピクセルです。レンダーボックスの高さ
(この場合、画面全体) は 300 ピクセルを超えるため、
主軸の位置合わせを に設定spaceEvenly
自由な垂直方向を分割します
各画像の間、上、下のスペースを均等にします。
Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Image.asset('images/pic1.jpg'),
Image.asset('images/pic2.jpg'),
Image.asset('images/pic3.jpg'),
],
);
アプリのソース: 行_列
ウィジェットのサイズ変更
レイアウトが大きすぎてデバイスに収まらない場合は、黄色の 影響を受けた端に沿って黒い縞模様が現れます。 ここにあります例幅が広すぎる行:
ウィジェットは、行または列内に収まるようにサイズを変更できます。Expanded
ウィジェット。前の例を修正するには、
画像の行がレンダー ボックスに対して幅が広すぎます。
各画像をExpanded
ウィジェット。
Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded( child: Image.asset('images/pic1.jpg'), ), Expanded( child: Image.asset('images/pic2.jpg'), ), Expanded( child: Image.asset('images/pic3.jpg'), ), ], );
アプリのソース: サイズ調整
おそらく、ウィジェットがそのウィジェットの 2 倍のスペースを占める必要があるかもしれません。
兄弟。このためには、Expanded
ウィジェットflex
財産、
ウィジェットのフレックス係数を決定する整数。
デフォルトのフレックス係数は 1 です。次のコードセット
中央の画像のフレックス係数を 2 にします。
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Image.asset('images/pic1.jpg'),
),
Expanded(
flex: 2,
child: Image.asset('images/pic2.jpg'),
),
Expanded(
child: Image.asset('images/pic3.jpg'),
),
],
);
アプリのソース: サイズ調整
ウィジェットのパッキング
デフォルトでは、行または列は主軸に沿って同じだけのスペースを占めます。
できるだけ密に詰め込みたい場合は、
それを設定するmainAxisSize
にMainAxisSize.min
。次の例
は、このプロパティを使用して、星のアイコンをまとめます。
Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.star, color: Colors.green[500]),
Icon(Icons.star, color: Colors.green[500]),
Icon(Icons.star, color: Colors.green[500]),
const Icon(Icons.star, color: Colors.black),
const Icon(Icons.star, color: Colors.black),
],
)
アプリのソース: パブロワ
行と列のネスト
レイアウト フレームワークを使用すると、行と列をネストできます。 行と列の内側を必要なだけ深くします。 概要を示したコードを見てみましょう 次のレイアウトのセクション:
アウトラインのセクションは 2 行として実装されます。評価行には次の内容が含まれます 星5つとレビューの数。アイコン行には 3 つのアイコンが含まれています アイコンとテキストの列。
評価行のウィジェット ツリー:
のratings
変数は、より小さな行を含む行を作成します
5 つ星のアイコンとテキスト:
var stars = Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.star, color: Colors.green[500]),
Icon(Icons.star, color: Colors.green[500]),
Icon(Icons.star, color: Colors.green[500]),
const Icon(Icons.star, color: Colors.black),
const Icon(Icons.star, color: Colors.black),
],
);
final ratings = Container(
padding: const EdgeInsets.all(20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
stars,
const Text(
'170 Reviews',
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.w800,
fontFamily: 'Roboto',
letterSpacing: 0.5,
fontSize: 20,
),
),
],
),
);
評価行の下のアイコン行には 3 つの列が含まれています。 各列にはアイコンと 2 行のテキストが含まれます。 ウィジェット ツリーでわかるように:
のiconList
変数はアイコン行を定義します。
const descTextStyle = TextStyle(
color: Colors.black,
fontWeight: FontWeight.w800,
fontFamily: 'Roboto',
letterSpacing: 0.5,
fontSize: 18,
height: 2,
);
// DefaultTextStyle.merge() allows you to create a default text
// style that is inherited by its child and all subsequent children.
final iconList = DefaultTextStyle.merge(
style: descTextStyle,
child: Container(
padding: const EdgeInsets.all(20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Column(
children: [
Icon(Icons.kitchen, color: Colors.green[500]),
const Text('PREP:'),
const Text('25 min'),
],
),
Column(
children: [
Icon(Icons.timer, color: Colors.green[500]),
const Text('COOK:'),
const Text('1 hr'),
],
),
Column(
children: [
Icon(Icons.restaurant, color: Colors.green[500]),
const Text('FEEDS:'),
const Text('4-6'),
],
),
],
),
),
);
のleftColumn
変数には評価とアイコンの行が含まれます。
パブロワを説明するタイトルとテキスト:
final leftColumn = Container(
padding: const EdgeInsets.fromLTRB(20, 30, 20, 20),
child: Column(
children: [
titleText,
subTitle,
ratings,
iconList,
],
),
);
左側の列は、SizedBox
幅を制限します。
最後に、UI は行全体 (
左の列と画像) 内Card
。
のパブロワの画像からピクサベイ。
を使用してネットから画像を埋め込むことができますImage.network()
しかし、
この例では、画像はプロジェクト内の画像ディレクトリに保存されます。
に追加されましたパブスペックファイルを使用してアクセスします。Images.asset()
。
詳細については、を参照してください。アセットと画像の追加。
body: Center(
child: Container(
margin: const EdgeInsets.fromLTRB(0, 40, 0, 30),
height: 600,
child: Card(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
width: 440,
child: leftColumn,
),
mainImage,
],
),
),
),
),
アプリのソース: パブロワ
一般的なレイアウト ウィジェット
Flutter には、レイアウト ウィジェットの豊富なライブラリがあります。 最も一般的に使用されるもののいくつかを次に示します。 目的は、できるだけ早く立ち上げて実行できるようにすることです。 完全なリストに圧倒されるよりも。 その他の利用可能なウィジェットについては、 を参照してくださいウィジェットカタログ、 または、APIリファレンスドキュメント。 また、API ドキュメントのウィジェット ページでは、多くの場合、提案が行われます。 ニーズに合った同様のウィジェットについて説明します。
次のウィジェットは 2 つのカテゴリに分類されます: 標準ウィジェット からウィジェットライブラリ、およびからの特殊なウィジェットマテリアルライブラリ。どのアプリでもウィジェット ライブラリを使用できますが、 マテリアル コンポーネント ライブラリを使用できるのはマテリアル アプリのみです。
標準ウィジェット
-
Container
: パディング、マージン、ボーダーを追加します。 ウィジェットの背景色やその他の装飾。 -
GridView
: ウィジェットをスクロール可能なグリッドとして配置します。 -
ListView
: ウィジェットをスクロール可能なリストとして配置します。 -
Stack
: ウィジェットを別のウィジェットの上に重ねます。
マテリアルウィジェット
容器
多くのレイアウトでは、Container
別れる
パディングを使用してウィジェットを使用したり、境界線やマージンを追加したりできます。
デバイスの背景を変更するには、
レイアウト全体を 1 つにまとめるContainer
そしてその背景を変える
色とかイメージとか。
概要(コンテナ)
- パディング、マージン、境界線を追加する
- 背景色や画像を変更する
- 単一の子ウィジェットが含まれますが、その子は行、 列、またはウィジェット ツリーのルート
例(コンテナ)
このレイアウトは 2 つの行を含む 1 つの列で構成され、各行には次の内容が含まれます。
画像2枚。あContainer
背景色を変更するために使用されます
列の色を明るい灰色にします。
Widget _buildImageColumn() {
return Container(
decoration: const BoxDecoration(
color: Colors.black26,
),
child: Column(
children: [
_buildImageRow(1),
_buildImageRow(3),
],
),
);
}
あContainer
丸い境界線と余白を追加するためにも使用されます
各画像に:
Widget _buildDecoratedImage(int imageIndex) => Expanded(
child: Container(
decoration: BoxDecoration(
border: Border.all(width: 10, color: Colors.black38),
borderRadius: const BorderRadius.all(Radius.circular(8)),
),
margin: const EdgeInsets.all(4),
child: Image.asset('images/pic$imageIndex.jpg'),
),
);
Widget _buildImageRow(int imageIndex) => Row(
children: [
_buildDecoratedImage(imageIndex),
_buildDecoratedImage(imageIndex + 1),
],
);
さらに見つけることができますContainer
の例チュートリアルそして flutterギャラリー(実行中のアプリ、リポジトリ)。
アプリのソース: 容器
グリッドビュー
使用GridView
ウィジェットを 2 次元として配置するには
リスト。GridView
2 つの事前作成されたリストが提供されます。
または、独自のカスタム グリッドを構築することもできます。ときGridView
コンテンツが長すぎてレンダー ボックスに収まらないことを検出します。
自動的にスクロールします。
概要 (GridView)
- ウィジェットをグリッドに配置します
- 列の内容がレンダー ボックスを超えることを検出します 自動的にスクロールを提供します
- 独自のカスタム グリッドを構築するか、提供されているグリッドの 1 つを使用します。
-
GridView.count
列の数を指定できます -
GridView.extent
最大ピクセルを指定できます タイルの幅
-
例 (グリッドビュー)
用途GridView.extent
タイルを最大限に使用してグリッドを作成するには
幅150ピクセル。
アプリのソース: グリッドとリスト
用途GridView.count
2 つのタイルからなるグリッドを作成するには
ポートレートモードでは幅が 3 タイル、ランドスケープモードでは 3 タイル幅になります。
タイトルは、footer
のプロパティ
各GridTile
。
ダーツコード: グリッドリスト_デモ.dartから flutterギャラリー
Widget _buildGrid() => GridView.extent(
maxCrossAxisExtent: 150,
padding: const EdgeInsets.all(4),
mainAxisSpacing: 4,
crossAxisSpacing: 4,
children: _buildGridTileList(30));
// The images are saved with names pic0.jpg, pic1.jpg...pic29.jpg.
// The List.generate() constructor allows an easy way to create
// a list when objects have a predictable naming pattern.
List<Container> _buildGridTileList(int count) => List.generate(
count, (i) => Container(child: Image.asset('images/pic$i.jpg')));
リストビュー
ListView
、列のようなウィジェット、自動的に
コンテンツが長すぎる場合にスクロールを提供します。
そのレンダーボックス。
概要 (リストビュー)
- 専門的な
Column
ボックスのリストを整理するため - 水平にも垂直にもレイアウト可能
- コンテンツが収まらないことを検出し、スクロールを提供します
- よりも設定可能性が低い
Column
、しかし使いやすく、 スクロールをサポートします
例 (リストビュー)
用途ListView
を使用してビジネスのリストを表示するにはListTile
s.あDivider
劇場を~から分離する
そのレストラン。
アプリのソース: グリッドとリスト
用途ListView
を表示するにはColors
から
のマテリアル デザイン パレット特定のカラーファミリー用。
ダーツコード: color_demo.dartから flutterギャラリー
Widget _buildList() {
return ListView(
children: [
_tile('CineArts at the Empire', '85 W Portal Ave', Icons.theaters),
_tile('The Castro Theater', '429 Castro St', Icons.theaters),
_tile('Alamo Drafthouse Cinema', '2550 Mission St', Icons.theaters),
_tile('Roxie Theater', '3117 16th St', Icons.theaters),
_tile('United Artists Stonestown Twin', '501 Buckingham Way',
Icons.theaters),
_tile('AMC Metreon 16', '135 4th St #3000', Icons.theaters),
const Divider(),
_tile('K\'s Kitchen', '757 Monterey Blvd', Icons.restaurant),
_tile('Emmy\'s Restaurant', '1923 Ocean Ave', Icons.restaurant),
_tile(
'Chaiya Thai Restaurant', '272 Claremont Blvd', Icons.restaurant),
_tile('La Ciccia', '291 30th St', Icons.restaurant),
],
);
}
ListTile _tile(String title, String subtitle, IconData icon) {
return ListTile(
title: Text(title,
style: const TextStyle(
fontWeight: FontWeight.w500,
fontSize: 20,
)),
subtitle: Text(subtitle),
leading: Icon(
icon,
color: Colors.blue[500],
),
);
}
スタック
使用Stack
ベースの上にウィジェットを配置するには
ウィジェット - 多くの場合は画像です。ウィジェットは完全に
またはベースウィジェットに部分的にオーバーラップします。
まとめ(スタック)
- 別のウィジェットと重なるウィジェットに使用します
- 子のリストの最初のウィジェットがベース ウィジェットです。 後続の子はそのベース ウィジェットの上にオーバーレイされます
- あ
Stack
のコンテンツはスクロールできません - レンダーボックスを超える子をクリップすることを選択できます
例(スタック)
用途Stack
をオーバーレイするContainer
(それを表示しますText
半透明の上に
黒の背景)CircleAvatar
。
のStack
を使用してテキストをオフセットします。alignment
財産とAlignment
s.
アプリのソース: カードとスタック
用途Stack
画像の上にアイコンをオーバーレイします。
ダーツコード: Bottom_navigation_demo.dartから flutterギャラリー
Widget _buildStack() {
return Stack(
alignment: const Alignment(0.6, 0.6),
children: [
const CircleAvatar(
backgroundImage: AssetImage('images/pic.jpg'),
radius: 100,
),
Container(
decoration: const BoxDecoration(
color: Colors.black45,
),
child: const Text(
'Mia B',
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
),
],
);
}
カード
あCard
、 からマテリアルライブラリ、
関連する情報のナゲットが含まれており、
ほぼすべてのウィジェットから構成できますが、よく一緒に使用されます。ListTile
。Card
一人の子供がいて、
ただし、その子は列、行、リスト、グリッドなどにすることができます。
または複数の子をサポートするその他のウィジェット。
デフォルトでは、Card
サイズを 0 × 0 ピクセルに縮小します。
使用できますSizedBox
カードのサイズを制限します。
Flutter では、Card
わずかに丸みを帯びた角が特徴です
ドロップシャドウで3D効果を与えます。
を変更するCard
のelevation
プロパティを使用して制御できます
ドロップシャドウ効果。標高を 24 に設定すると、
たとえば、視覚的に持ち上げます。Card
さらにそこから
表面が変化し、影がより分散されます。
サポートされている標高値のリストについては、を参照してください。標高の中に素材ガイドライン。
サポートされていない値を指定すると、ドロップ シャドウが完全に無効になります。
概要(カード)
- を実装します。素材カード
- 関連する情報の塊を提示するために使用されます
- 子供を 1 人受け入れますが、その子供は
Row
、Column
、または子のリストを保持する他のウィジェット - 角丸とドロップシャドウで表示されます
- あ
Card
のコンテンツはスクロールできません - からマテリアルライブラリ
例(カード)
あCard
3 つの ListTiles を含み、ラップによってサイズ変更されます
それはSizedBox
。あDivider
最初のものを分離します
そして二番目ListTiles
。
アプリのソース: カードとスタック
あCard
画像とテキストが含まれています。
ダーツコード: カード_デモ.ダーツから flutterギャラリー
Widget _buildCard() {
return SizedBox(
height: 210,
child: Card(
child: Column(
children: [
ListTile(
title: const Text(
'1625 Main Street',
style: TextStyle(fontWeight: FontWeight.w500),
),
subtitle: const Text('My City, CA 99984'),
leading: Icon(
Icons.restaurant_menu,
color: Colors.blue[500],
),
),
const Divider(),
ListTile(
title: const Text(
'(408) 555-1212',
style: TextStyle(fontWeight: FontWeight.w500),
),
leading: Icon(
Icons.contact_phone,
color: Colors.blue[500],
),
),
ListTile(
title: const Text('costa@example.com'),
leading: Icon(
Icons.contact_mail,
color: Colors.blue[500],
),
),
],
),
),
);
}
リストタイル
使用ListTile
、からの特殊な行ウィジェットマテリアルライブラリ、行を簡単に作成する方法
最大 3 行のテキストとオプションの先頭を含む
そして末尾のアイコン。ListTile
で最も一般的に使用されますCard
またListView
ですが、他の場所でも使用できます。
概要 (ListTile)
- 最大 3 行のテキストを含む特殊な行。 オプションのアイコン
- よりも設定可能性が低い
Row
、しかし使いやすい - からマテリアルライブラリ
例 (ListTile)
あCard
3個入りListTile
s.
アプリのソース: カードとスタック
用途ListTile
主要なウィジェットを備えています。
ダーツコード: list_demo.dartから flutterギャラリー
制約
Flutter のレイアウト システムを完全に理解するには、以下が必要です Flutter の位置とサイズを学ぶ レイアウト内のコンポーネント。詳細については、 見る制約を理解する。
動画
以下のビデオはその一部ですフォーカスの flutterシリーズ、
説明Stateless
とStateful
ウィジェット。
flutter イン フォーカス プレイリスト
の各エピソード今週のウィジェット シリーズウィジェットに焦点を当てます。それらのいくつかにはレイアウト ウィジェットが含まれています。
今週の Flutter ウィジェット プレイリスト
その他のリソース
レイアウト コードを作成する場合は、次のリソースが役立つ場合があります。
-
- レイアウトチュートリアル
- レイアウトを構築する方法を学びます。
-
- ウィジェットカタログ
- Flutter で使用できる多くのウィジェットについて説明します。
-
- Flutter の HTML/CSS アナログ
- Webプログラミングに詳しい方にとっては、 このページでは、HTML/CSS 機能を Flutter 機能にマップします。
-
- flutterギャラリー実行中のアプリ、リポジトリ
- 多くのマテリアル デザイン ウィジェットやその他を紹介するデモ アプリ flutter機能。
-
- APIリファレンスドキュメント
- すべての Flutter ライブラリのリファレンス ドキュメント。
-
- Flutter でのボックス制約の処理
- ウィジェットがレンダー ボックスによってどのように制約されるかについて説明します。
-
- アセットと画像の追加
- 画像やその他のアセットをアプリのパッケージに追加する方法について説明します。
-
- Flutter を使用したゼロツーワン
- 初めての Flutter アプリを作成したある人の経験。